package com.qf.service.impl;

import com.qf.dao.AdminDao;
import com.qf.dao.impl.AdminDaoImpl;
import com.qf.pojo.Admin;
import com.qf.pojo.PageBean;
import com.qf.pojo.User;
import com.qf.service.AdminService;

import java.sql.SQLException;
import java.util.List;

/**
 * @author Kuke
 * @date 2022/3/2 16:10
 * 管理员业务接口实现
 */
public class AdminServiceImpl implements AdminService {

    /**
     * 获取管理员
     * @param admin 管理员实体
     * @return true,表示可以登录,false,登录失败
     */
    @Override
    public Admin isLogin(Admin admin) {
        try {
            //调用管理的数据接口
            AdminDao adminDao = new AdminDaoImpl() ;
            Admin loginAdmin = adminDao.selectAdminByName(admin.getName()) ;
            //判断
            if(loginAdmin!=null){
                //查询到了
                //判断 密码一致
                if(loginAdmin.getPassword().equals(admin.getPassword())){
                    return loginAdmin ;
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 管理员查询所有普通用户
     * @return 返回用户列表
     */
    @Override
    public List<User> getAllUser() {

        try {
            //调用管理员接口
            AdminDao adminDao = new AdminDaoImpl() ;
            List<User> list = adminDao.selectAllUser() ;
            if(list!=null){
                return list ;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 通过用户id删除用户
     * @param uid 用户id (随机字符)
     */
    @Override
    public void delUser(String uid) {
        //调用数据访问接口
        try {
            AdminDao adminDao = new AdminDaoImpl() ;
            adminDao.deleteUserByUid(uid);
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

    /**
     * 通过用户uid获取用户的实体
     * @param uid 用户编号
     * @return  返回用户实体
     */
    @Override
    public User getUser(String uid) {
        try {
            //调用数据访问接口
            AdminDao adminDao = new AdminDaoImpl() ;
            User user = adminDao.selectUserByUid(uid) ;
            if(user!=null){
                return  user ;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 修改用户
     * @param user 用户实体
     */
    @Override
    public void updateUser(User user) {
        try {
            //调用数据访问接口
            AdminDao adminDao = new AdminDaoImpl() ;
            adminDao.updateUserByUid(user) ;
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 分页查询用户
     * @param curentPage 当前页码
     * @param pageSize  每页显示的条数
     * @return  返回的分页实体
     */
    @Override
    public PageBean<User> findUserByPage(int curentPage, int pageSize) {

        try {
            //调用数据访问接口
            AdminDao adminDao = new AdminDaoImpl() ;
            List<User> list = adminDao.selectUserByPage(curentPage,pageSize) ;

            //调用数据接口,获取总记录数
            int totalCount = adminDao.selectTotalCount();

            return new PageBean<>(curentPage,pageSize,totalCount,list);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null ;
    }
}
